Grundkurs SQL

2.4  Das Schlüsselwort INNER JOIN

INNER JOIN mit zwei Tabellen

Für die Verknüpfung von Tabellen ist Typenverträglichkeit gefordert. Der Datentyp der zu verbindenden Spalten muss also gleich sein, also Zahl und Zahl oder Text und Text, usw. Wie wir wissen, dient die WHERE-Anweisung auch zum Filtern von Datensätzen.
Bei sehr umfangreichen SQL-Anweisungen kann man schnell ein wenig durcheinander kommen, was denn zur Verknüpfung für einen INNER JOIN und was zum Filtern der Datenmenge gehört. Deshalb ist eine Schreibweise gebräuchlicher, die auf die WHERE-Anweisung verzichtet und stattdessen für die Verknüpfungsbedingung die ON-Anweisung und die Schlüsselwörter INNER JOIN verwendet. Das sieht dann in der allgemeinen Form so aus:

SELECT ...
FROM   Tabelle1
       INNER JOIN Tabelle2
       ON Tabelle1.Primärschlüssel = Tabelle2.Fremdschlüssel

Denken Sie daran: ein Join ist ein Join, egal ob er mit WHERE oder mit dem Schlüsselwort JOIN durchgeführt wird. Es handelt sich immer um die gleichzeitige Abfrage mehrerer Tabellen!

Jede gleichzeitige Abfrage mehrerer Tabellen mittels der WHERE-Anweisung ist ein innerer Join. Dasselbe Ergebnis liefert die Anweisung INNER JOIN ... ON, nur die Schreibweise unterscheidet sich etwas, wie wir gleich sehen werden.
Es gibt auch äußere Joins, diese werden später eine Rolle spielen.

INNER JOIN ordnet jedem Datensatz der einen Tabellen die dazugehörenden Datensätze der anderen Tabelle zu. Die Information darüber, was denn unter dazugehörend zu verstehen ist, muss in der SQL-Anweisung enthalten sein. Als Ergebnis entsteht quasi eine neue Tabelle, die aus den verbundenen Tabellen zusammengesetzt ist und alle Spalten beider Tabellen enthält.

Es kommt häufig vor, dass die zu verbindenden Spalten in unterschiedlichen Tabellen gleiche Namen haben. Man spricht dann von einem natürlichen JOIN.

Um bei einer Abfrage zu wissen, aus welcher Tabelle die anzuzeigende Spalte genommen werden soll, also welche Tabelle den Primär- und welche den Fremdschlüssel enthält, muss vor den betreffenden Spaltennamen der Tabellenname gesetzt werden. Zwischen den beiden steht dann ein Punkt und kein Leerzeichen (siehe obere allgemeine Anweisung).
Solange die Attributnamen eindeutig sind und nur in einer der Tabellen vorkommen, kann der Tabellenname weggelassen werden.

Das war jetzt eine Menge Theorie, sehen wir uns im anschließenden Abschnitt ein Beispiel dazu an.